//日期插件
$(function () {
    var db = $('#db');

    db.datebox({
            onShowPanel: function () {//显示日趋选择对象后再触发弹出月份层的事件，初始化时没有生成月份层
                span.trigger('click'); //触发click事件弹出月份层
                //fix 1.3.x不选择日期点击其他地方隐藏在弹出日期框显示日期面板
                if (p.find('div.calendar-menu').is(
                        ':hidden'))
                    p.find('div.calendar-menu').show();

                if (!tds)
                    setTimeout(
                        function () {//延时触发获取月份对象，因为上面的事件触发和对象生成有时间间隔
                            tds = p
                                .find('div.calendar-menu-month-inner td');
                            tds
                                .click(function (e) {
                                    e
                                        .stopPropagation(); //禁止冒泡执行easyui给月份绑定的事件
                                    var year = /\d{4}/
                                        .exec(span
                                            .html())[0]//得到年份
                                        , month = Number(
                                        $(this)
                                            .attr(
                                                'abbr'),
                                        10); //月份，这里不需要+1

                                    db
                                        .datebox(
                                            'hidePanel')
                                        //隐藏日期对象
                                        .datebox(
                                            'setValue',
                                            year
                                            + '-'
                                            + month); //设置日期的值
                                });
                        }, 0);
                yearIpt.unbind();//解绑年份输入框中任何事件
            },
            parser: function (s) {
                if (!s)
                    return new Date();
                var arr = s.split('-');
                return new Date(Number(arr[0], 10), Number(
                    arr[1], 10) - 1, 1);
            },
            formatter: function (d) {
                var st = '-'
                if (d.getMonth() < 9) {
                    st = "-0"
                }
                return d.getFullYear() + st
                    + (d.getMonth() + 1);
                /*getMonth返回的是0开始的，忘记了。。已修正*/
            }
        });
    var p = db.datebox('panel'), //日期选择对象
        tds = false, //日期选择对象中月份
        aToday = p.find('a.datebox-current'), yearIpt = p
            .find('input.calendar-menu-year'), //年份输入框
        //显示月份层的触发控件
        span = aToday.length ? p.find('div.calendar-title span') : //1.3.x版本
            p.find('span.calendar-text'); //1.4.x版本
    if (aToday.length) {//1.3.x版本，取消Today按钮的click事件，重新绑定新事件设置日期框为今天，防止弹出日期选择面板
        aToday.unbind('click').click(
            function () {
                var now = new Date();
                db.datebox('hidePanel').datebox(
                    'setValue',
                    now.getFullYear() + '-'
                    + (now.getMonth() + 1));
            });
    }
});
//导出
var tableToExcel = (function () {
    var uri = 'data:application/vnd.ms-excel;base64,',
        template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="UTF-8"><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
        base64 = function (s) {
            return window.btoa(unescape(encodeURIComponent(s)))
        }, format = function (s, c) {
            return s.replace(/{(\w+)}/g, function (m, p) {
                return c[p];
            })
        }
    return function (table, name, r) {
        if (!table.nodeType) {
            table = $("#cxdm")
        }
        var headerLength = $(".datagrid-header-row").find("td").length;//取得头部的长度
        var table = "<tbody><tr>"
        for (var i = 0; i < headerLength; i++) {
            if (i == 0) {
                table += "<td align='center' style='width:130px'>"
                    + $(".datagrid-header-row").find("td")
                        .eq(i).text() + "</td>";
            } else if (i == headerLength - 2) {
                table += "<td align='center' style='width:130px'>"
                    + $(".datagrid-header-row").find("td")
                        .eq(i).text() + "</td>";
            } else {
                table += "<td align='center' style='width:30px'>"
                    + $(".datagrid-header-row").find("td")
                        .eq(i).text() + "</td>";
            }
        }
        var bodyLengthtr = $(".datagrid-btable").find("tr").length;//取得表格tr的长度
        for (var i = 0; i < bodyLengthtr; i++) {
            var bodyLengthtd = $(".datagrid-btable").find("tr")
                .eq(i).find("td").length;//取得表格td的长度
            table += "<tr>"
            for (var j = 0; j < bodyLengthtd; j++) {
                if (j == 0) {
                    table += "<td align='center'  style='width:150px'>"
                        + $(".datagrid-btable").find("tr")
                            .eq(i).find("td").eq(j)
                            .text() + "</td>"
                } else {
                    table += "<td align='center'  style='width:50px'>"
                        + $(".datagrid-btable").find("tr")
                            .eq(i).find("td").eq(j)
                            .text() + "</td>"
                }
            }
            table += "</tr>"
        }
        table += "</tbody>"
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table
        }
        document.getElementById("dlink").href = uri
            + base64(format(template, ctx));

        var bbtime = $('#db').val();
        document.getElementById("dlink").download = bbtime + '入库月表.xls';
        document.getElementById("dlink").click();
    }
})();


